package Other;


import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class leet_401 {


    public static void main(String[] args) {
        List<String> numsList = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
        comSelect(numsList);
    }

    public static void comSelect(List<String> numsList){
        // 默认是false
        boolean[] used = new boolean[numsList.size()];

        Test(numsList, used, "", 4, 0);

    }

    /**
     *
     * @param numsList  传入数组
     * @param used      使用数组
     * @param target    目标值选择次数
     * @param now       当前选择次数
     * @param value     当前选择的值
     */
    public static void Test(List<String> numsList, boolean[] used, String value,int target, int now){
        if(target == now){
            System.out.println(value);
        }

        for(int i=0; i<numsList.size(); i++){
            if(!used[i]){
                value = value + numsList.get(i);
                used[i] = true;
                now = now + 1;
                Test(numsList, used, value, target, now);
                used[i]=false;
            }
        }
    }



    /**
     * 所有可能的情况
     * @param allNums  亮灯的总数
     * @return allList 所有可能的情况
     */
    public List<String> allMaybeTime(int allNums){
        // 总的时间情况
        List<String> allList = new ArrayList<String>();

        for(int i=0; i<=allNums; i++){
            // 小时的亮灯总是最大为4
            if(i<=4) {
                int hourNum = i;
                int minuteNum = allNums - i;
                // 将小时与分钟两两拼接
                List<String> hourList = hourLightNum(hourNum);
                List<String> minuteList = minuteLightNum(minuteNum);
                for (String hour : hourList) {
                    for (String minute : minuteList) {
                        String maybeTime = hour + ":" + minute;
                        allList.add(maybeTime);
                    }
                }
            }else {
                break;
            }
        }
        return allList;
    }

    /**
     * 小时灯泡计算
     * @param nums 亮灯的数量
     * @return 可能的小时
     */
    public List<String> hourLightNum(int nums){
        // Integer.valueOf("0101",2).toString; 将二进制转为数字
        List<String> hourList = new ArrayList<String>();


        return hourList;
    }


    /**
     * 分钟灯泡计算
     * @param nums 亮灯的数量
     * @return 可能的分钟
     */
    public List<String> minuteLightNum(int nums){
        List<String> minuteList = new ArrayList<String>();


        return minuteList;
    }
}

class Solution_401{

}



